package com.lyubia.shop.order.service;

import com.lyubia.shop.common.result.BaseResult;

import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;

public interface PayService {

    /**
     * 支付请求发起
     * @param orderSn 订单编号
     * @return 请求信息
     */
    String startPayRequest(String orderSn);

    /**
     * 同步回调
     * @param outTradeNo 订单编号
     * @param totalAmount 总金额
     * @param tradeNo 交易流水（支付编号）
     * @param request 请求
     * @return 结果
     */
    BaseResult returnCallback(String outTradeNo,
                              BigDecimal totalAmount,
                              String tradeNo,
                              HttpServletRequest request);

    /**
     * 支付异步回调
     * @param outTradeNo  订单编号
     * @param totalAmount  订单金额
     * @param tradeNo     交易流水号
     * @param tradeStatus  校验状态
     * @param request     请求
     * @return 结果
     */
    BaseResult notifyCallback(String outTradeNo,
                              BigDecimal totalAmount,
                              String tradeNo,
                              String tradeStatus,
                              HttpServletRequest request);
}
